#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int T;
struct anssave{
    double l,r;
};
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    cin>>T;
    while(T--){
        int n,m,L;
        int k0=0,k1=0,ka=0,kb=0;
        double v1;
        cin>>n>>m>>L>>v1;
        int pes[m],flg[m];
        bool vis[n],flag[m];
        anssave ans[n];
        for(int i=0;i<n;i++){
            double s0,v0,a,s1;
            double t;
            cin>>s0>>v0>>a;
            vis[i]=false;
            if(a==0){
                if(v0>v1){
                    k0++;
                }
                continue;
            }
            t=(v1-v0)/a;
            s1=v0*t+0.5*a*t*t;
            if(a>0){
                ans[i].l=s1;
                ans[i].r=L;
            }else{
                if(v0>v1){
                    ans[i].l=s0;
                    ans[i].r=s1;
                }
            }
        }
        for(int i=0;i<m;i++){
            cin>>pes[i];
            flag[i]=0;
        }
        sort(pes,pes+m);
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(ans[j].l<pes[j]&&pes[j]<ans[i].r){
                    if(!vis[i]){
                        k0++;
                        ka++;
                        flag[j]=true;
                        flg[j]++;
                    }
                    vis[i]=true;
                }
            }
            for(int i=0;i<n;i++){
                vis[i]=false;
            }
            for(int i=0;i<m;i++){
                flag[i]=false;
            }
            for(int j=0;j<m;j++){
                if(flg[j]==n){
                    k1=1;
                    break;
                }
            }
            for(int j=m-1;j>=0;j--){
                if(ans[j].l<pes[j]&&pes[j]<ans[i].r){
                    if(!vis[i]){
                        kb++;
                        flag[j]=true;
                    }
                    vis[i]=true;
                }
            }
            k1=min(ka,kb);
        }
        cout<<k0<<" "<<n-k1<<endl;
    }
    return 0;
}
